#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2025/6/21 1:33
# @Author  : summer
# @Email   : 610658552@qq.com
# @File    : encrypt.py
# @Software: PyCharm
# @Desc    : 加密
import hashlib
from django.conf import settings


def md5(data_string, secret_key=None):  # 1. 默认参数改为None，不直接读settings
    """
    MD5加密

    Args:
        data_string (str): 要加密的字符串
        secret_key (str, optional): 加密密钥，默认使用settings.JWT_TOKEN

    Returns:
        str: MD5加密后的16进制字符串
    """
    # 2. 在函数内部读取settings，此时Django环境已初始化
    if secret_key is None:
        secret_key = settings.JWT_TOKEN  # 这里读取才安全

    if not data_string:
        return ""

    obj = hashlib.md5(secret_key.encode('utf-8'))
    obj.update(data_string.encode('utf-8'))
    return obj.hexdigest()


if __name__ == '__main__':
    import os
    import django

    # 3. 先初始化Django环境
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "notify.settings")  # 确保项目settings路径正确
    django.setup()

    # 4. 测试MD5加密（此时调用函数，内部才会读取settings.JWT_TOKEN）
    test_str = "123"
    encrypted = md5(test_str)  # 无需传secret_key，自动用settings.JWT_TOKEN  73143c99d811fe2cf1c7c47017d0ebb7
    print(f"原始字符串：{test_str}")
    print(f"MD5加密结果：{encrypted}")